home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio / Ham Radio CD-ROM (Emerald Software) (1995).ISO / misc / utilitys / ms.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1980-01-01  |  4.9 KB  |  114 lines

  1. 10  REM PRECISION 5:PI-3.1416: PRINT: PRINT: HP=PI/2
  2. 20  PRINT "PROGRAM FOR CALCULATING MICROSTRIP CHARACTERISTICS V2.2 2/6/83"
  3. 22  PRINT:PRINT,"K2UYH --- modified for ibm pc --- wa2tif":PRINT
  4. 25  PRINT: INPUT "SINGLE (S) OR COUPLED (C) MICROSTRIP"; Q1$
  5. 26  IF Q1$="C" THEN 395 ELSE IF Q1$<>"S" THEN 25
  6. 30  PRINT:INPUT "WANT TO CALC Z0, WIDTH (W) OR HIGHT (H)"; A$
  7. 40  PRINT: IF A$="Z0" THEN 320 ELSE IF A$="W" THEN 60 
  8. 50  INPUT "WHAT IS LINE WIDTH"; W: GOTO 70
  9. 60  INPUT "WHAT IS BOARD HIGHT IN INCHES"; H
  10. 70  INPUT "WHAT IS BOARD DIELECTRIC CONSTANT"; ER
  11. 80  INPUT "WHAT IS DESIRED Z0"; Z0
  12. 90  INPUT "WANT TO CONSIDER STRIP THICKNESS (Y OR N)"; Q$
  13. 100  IF Q$="Y"THEN INPUT"STRIP THICKNESS IN INCHES";T
  14. 105  GOSUB 200
  15. 110  LPRINT,: LPRINT, "WIDTH ="; W; "  HIGHT ="; H; "  Z0 ="; ZT
  16. 115  LPRINT: LPRINT,"FREQ="F;TAB(20)"V.F.="VF;TAB(40)"WAVELENGTH INCHES="WL: GOTO 175
  17. 116  REM IF DV=2 THEN 175
  18. 120  PRINT: INPUT "DO YOU WANT TO CALC WAVELENGTH (Y OR N)"; W$
  19. 130  PRINT: IF W$="N" THEN 170 ELSE INPUT "FREQ IN MHZ"; F
  20. 150  VF=1/SQR(EF): WL=VF*11808/F: LPRINT ,
  21. 160  LPRINT , "V.F. ="; VF, "WAVELENGTH INCHES ="; WL
  22. 170  PRINT: INPUT "WANT HARD COPY (Y/N)"; H$
  23. 171  IF H$="N"THEN 175 ELSE IF H$<>"Y"THEN 170 ELSE DV=2
  24. 172  LPRINT:LPRINT,"MICROSTRIP CHARACTERISTICS":GOTO 110
  25. 175  REM DV=0:PRINT:INPUT"DO YOU WANT TO CONTINUE (Y OR N)";Q$:PRINT
  26. 180  IF Q$="N" THEN END ELSE 30
  27. 190  REM **************** SUB #1 ***************
  28. 200  A=Z0/60*SQR((ER+1)/2)+(ER-1)/(ER+1)*(0.23+0.11/ER)
  29. 210  B=377*PI/(2*Z0*SQR(ER))
  30. 220  R=2*(B-1-LOG(2*B-1)+(ER-1)*(LOG(B-1)+0.39-0.61/ER)/(2*ER))/PI
  31. 230  IF R>2 THEN 240 ELSE R=8*EXP(A)/(EXP(2*A)-2)
  32. 240  IF A$="H" THEN H=W/R ELSE W=R*H
  33. 245  X=1/R: GOSUB 280: IF Q$<>"Y" THEN RETURN
  34. 250  IF R>0.16 THEN Q=2*H/T ELSE Q=4*PI*W/T
  35. 260  DR=T*(1+LOG(Q))/(PI*H): R=R-DR
  36. 275  IF A$="H" THEN H=W/R ELSE W=R*H
  37. 276  RETURN
  38. 279  REM ************** SUB #2 *******************
  39. 280  IF R<1 THEN 300 ELSE EF=(ER+1)/2+(ER-1)/(2*SQR(1+12*X))
  40. 290  ZT=120*PI/(SQR(EF)*(R+1.393+2*LOG(R+1.444)/3)): RETURN
  41. 300  EF=(ER+1)/2+(ER-1)/2*(1/SQR(1+12*X)+0.04*(1-R)^2)
  42. 310  ZT=60*LOG(8*X+R/4)/SQR(EF): RETURN
  43. 315  REM ***************** Z0 ANALYSIS ********************
  44. 320  INPUT "WHAT IS LINE WIDTH"; W
  45. 330  INPUT "WHAT IS BOARD HIGHT IN INCHES"; H
  46. 340  INPUT "WHAT IS BOARD DIELECTRIC CONSTANT"; ER: R=W/H
  47. 350  INPUT "WANT TO CONSIDER STRIP THICKNESS (Y OR N)"; Q$
  48. 360  IF Q$<>"Y" THEN 390 ELSE INPUT "STRIP THICKNESS IN IN."; T
  49. 370  IF R>0.16 THEN Q=2*H/T ELSE Q=4*PI*W/T
  50. 380  DR=T*(1+LOG(Q))/(PI*H): R=R-DR
  51. 390  X=1/R: GOSUB 280: PRINT "Z0 ="; ZT: GOTO 120
  52. 391  REM ***************** COUPLED MS ********************
  53. 395  DEF FNCH(X)=(EXP(X)+EXP(-X))/2
  54. 396  DEF FNAC(X)=LOG(X+SQR(X*X-1))
  55. 397  DEF FNG(Y)=FNCH(HP*Y)
  56. 398  DEF FNH(X,Y)=FNCH(PI*X+HP*Y)
  57. 400  PRINT: PRINT "WANT TO CALCULATE:"
  58. 401  PRINT TAB(15) "Zoe AND Zoo - (Z0)"
  59. 402  PRINT TAB(15) "WIDTH AND SPACING - (W)"
  60. 403  PRINT TAB(12) "OR HIGHT AND SPACING - (H)";: INPUT A$
  61. 410  PRINT: IF A$="Z0" THEN 800 ELSE IF A$="W" THEN 430 
  62. 420  INPUT "WHAT IS LINE WIDTH"; W: GOTO 440
  63. 430  INPUT "WHAT IS BOARD HIGHT IN INCHES"; H
  64. 440  INPUT "WHAT IS BOARD DIELECTRIC CONSTANT"; ER
  65. 445  IF ER<=6 THEN K=4/(PI*(1+ER/2)) ELSE K=1/PI
  66. 450  INPUT "WHAT ARE THE DESIRED Zoe AND Zoo"; ZE, ZO
  67. 460  INPUT "WANT TO CONSIDER STRIP THICKNESS (Y OR N)"; Q$
  68. 470  IF Q$="Y"THEN INPUT"STRIP THICKNESS IN INCHES";T
  69. 480  Z0=ZE/2: GOSUB 200: RE=R: Z0=ZO/2: GOSUB 200: RO=R
  70. 490  G=(FNCH(HP*RE)+FNCH(HP*RO)-2)/(FNCH(HP*RO)-FNCH(HP*RE))
  71. 500  S1=FNAC(G)/HP: RP=FNCH(RE*HP): HC=(G+G*RP+RP-1)/2
  72. 510  W1=(FNAC(HC)-HP*S1)/PI
  73. 512  REM ************** SEARCH ************************
  74. 513  PRINT: PRINT "IN SEARCH": PRINT: I=0
  75. 515  G=FNG(S1)
  76. 520  HC=FNH(W1,S1):WE=FNAC((2*HC-G+1)/(G+1))/HP
  77. 530  WO=FNAC((2*HC-G-1)/(G-1))/HP+K*FNAC(1+2*(W1/S1))
  78. 540  DE=(WE-RE)/RE: DO=(WO-RO)/RO: I=I+1: IF I=100 THEN PRINT "DOES NOT CONVERG": GOTO 590
  79. 550  IF DE>0.01 AND DO>0.01 THEN W1=W1-W1*(DO+DE): GOTO 520
  80. 560  IF DE<-0.01 AND DO<-0.01 THEN W1=W1-W1*(DO+DE): GOTO 520
  81. 570  IF DE>0.01 AND DO<-0.01 THEN S1=S1-S1*(DE-DO): GOTO 515
  82. 580  IF DE<-0.01 AND DO>0.01 THEN S1=S1+S1*(DO-DE): GOTO 515
  83. 582  IF ABS(DE)<=0.01 AND ABS(DO)>0.01 THEN S1=S1+S1*DO: GOTO 515
  84. 584  IF ABS(DO)<=0.01 AND ABS(DE)>0.01 THEN S1=S1-S1*DO: GOTO 515
  85. 585  REM ************** FOUND *************************
  86. 590  R=WE:GOSUB 240:TE=ZT*2:VT=EF:R=WO:GOSUB 240:OO=ZT*2:OT=EF
  87. 595  R=W1: GOSUB 240: EF=SQR(VT*OT): S=S1*H
  88. 600  PRINT#DV:PRINT#DV,"WIDTH="W"  HIGHT="H"  SPACE="S"  Z0="ZT"  Zoe="TE"  Zoo="OO
  89. 610  IF DV=2 AND W$="Y" THEN PRINT#2: PRINT#2,"FREQ="F;TAB(20)"V.F.="VF;TAB(40)"WAVELENGTH INCHES="WL: GOTO 700
  90. 620  IF DV=2 THEN 700
  91. 630  PRINT: INPUT "DO YOU WANT TO CALC WAVELENGTH (Y OR N)"; W$
  92. 640  PRINT: IF W$="N" THEN 670 ELSE INPUT "FREQ IN MHZ"; F
  93. 650  VF=1/SQR(EF): WL=VF*11808/F: PRINT#DV, 
  94. 660  PRINT#DV, "V.F. ="; VF, "WAVELENGTH INCHES ="; WL
  95. 670  PRINT: INPUT "WANT HARD COPY (Y/N)"; H$
  96. 680  IF H$="N"THEN 700 ELSE IF H$<>"Y"THEN 670 ELSE DV=2
  97. 690  PRINT#2:PRINT#2,"COUPLED MICROSTRIP CHARACTERISTICS":GOTO600
  98. 700  DV=0:PRINT:INPUT"DO YOU WANT TO CONTINUE (Y OR N)";Q$:PRINT
  99. 710  IF Q$="N" THEN END ELSE 25
  100. 790  REM ************** COUPLED ANALYSIS *****************
  101. 800  INPUT "WHAT IS LINE WIDTH"; W
  102. 805  INPUT "WHAT IS LINE SPACING"; S
  103. 810  INPUT "WHAT IS BOARD HIGHT IN INCHES"; H: RS=S/H
  104. 820  INPUT "WHAT IS BOARD DIELECTRIC CONSTANT"; ER: RW=W/H
  105. 825  IF ER<=6 THEN K=4/(PI*(1+ER/2)) ELSE K=1/PI
  106. 830  INPUT "WANT TO CONSIDER STRIP THICKNESS (Y OR N)"; Q$
  107. 840  IF Q$<>"Y" THEN 870 ELSE INPUT "STRIP THICKNESS IN IN."; T
  108. 850  IF RW>0.16 THEN Q=2*H/T ELSE Q=4*PI*W/T
  109. 860  DR=T*(1+LOG(Q))/(PI*H): RW=RW-DR
  110. 870  G=FNG(RS): HC=FNH(RW,RS):WE=FNAC((2*HC-G+1)/(G+1))/HP
  111. 880  WO=FNAC((2*HC-G-1)/(G-1))/HP+K*FNAC(1+2*(RW/RS))
  112. 890  R=WE:GOSUB 240:TE=ZT*2:VT=EF:R=WO:GOSUB 240:OO=ZT*2:OT=EF
  113. 900  R=RW:GOSUB240:EF=SQR(VT*OT):PRINT"Z0="ZT"  Zoe="TE"  Zoo="OO:GOTO630
  114.